import md5 from 'js-md5'
export function yjsb_auth(url, unionid) {
    /*拼接验证字符串
     *
     * 算法：
     * IN                              e.g. ->   http://api.s.com/v1/cate?openid=123&b=1&a=2&key=AABBCC112233
     * 1.去掉$_GET中的key参数
     * 2.对$_GET进行升序排序
     * 3.拼接完整的请求                 e.g. ->   http://api.s.com/v1/cate?openid=123&b=1&a=2
     * 4.添加$_enc_str鉴权字符          e.g. ->   http://api.s.com/v1/cate?a=2&b=1&openid=123&enck=wld-yjsb-api-secrit-key-43bc5ddc3487b34fc846014c2f4bd2ec-encrypt
     * 5.对结果进行md5加密              e.g. ->   AABBCCDD112233
     * 6.与原始$_GET['key']进行比对，若相同，鉴权成功；否则鉴权失败，抛出403错误，停止访问
     *
     * */
    //鉴权字符串（写死）
    var _enc_str = 'enck=wld-yjsb-api-secrit-key-43bc5ddc3487b34fc846014c2f4bd2ec-encrypt';
    //按?展开url的网址和请求参数部分
    var pare = url.split('?');
    if (pare.length < 2) {
        pare[1] = '';
    }
    var url_base = pare[0];
    var url_parems = pare[1];
    //按&展开请求参数k=v部分
    var gets = url_parems.split('&');
    //遍历参数数组
    for (var i = 0; i < gets.length; i++) {
        if (gets[i]) {
            //按=号展开键值对
            gets[i] = gets[i].split('=');
            //删除unionid，key参数以及不合法的参数
            if (['unionid', 'key'].indexOf(gets[i][0]) > -1 || gets[i].length !== 2) {
                gets.splice(i, 1);
                i--;
            }
        } else {
            //删除不合法的参数
            gets.splice(i, 1);
            i--;
        }
    }
    //在参数数组中添加unionid参数
    gets.push(['unionid', unionid]);
    //数组排序
    gets.sort(function(a, b) {
        if (a[0] > b[0]) {
            return 1;
        } else if (a[0] < b[0]) {
            return -1;
        } else {
            return 0;
        }
    });
    //拼接加密字符串并计算md5值
    var auth_url = url_base + '?';
    for (var i = 0; i < gets.length; i++) {
        auth_url += gets[i][0];
        auth_url += '=';
        auth_url += gets[i][1];
        auth_url += '&';
    }
    var md5_url = auth_url + _enc_str;
    var key = md5(md5_url);
    //返回鉴权后的url
    return auth_url + 'key=' + key;
}